
### 项目五 超声波模块项目

**项目介绍：**

![image100](../media/2a0b40b983f1aead31d43e1662c4257e.png)

HC-SR04
超声波传感器利用声呐原理来测量物体的距离，就像蝙蝠那样。它具有出色的非接触式距离检测功能，精度高且读数稳定，使用方便。它配备有超声波发射器和接收器模块。

HC-SR04
或超声波传感器在众多电子项目中被广泛使用，用于创建障碍物检测和距离测量应用以及其他各种应用。在这里，我们带来了使用
Arduino 和超声波传感器测量距离的简单方法，以及如何将超声波传感器与
Arduino 配合使用。

**超声波参数：**

![image101](../media/9e771e017c2d1924a4e9bcf402b652f1.png)

工作电压：+5 伏

直流静态电流：\<2 毫安

工作电流：15 毫安

有效角度：\< 15°

测距范围：2 厘米 - 400 厘米

分辨率：0.3 厘米

测量角度：30 度

触发输入脉冲宽度：10 微秒

**项目组件：**

| UNO R3 开发板\*1                                        | L298P 电机驱动扩展板 V1\*1                              | LED白发红模块\*1                                        | HC-SR04超声波传感器\*1                                  |
|---------------------------------------------------------|---------------------------------------------------------|---------------------------------------------------------|---------------------------------------------------------|
| ![image102](../media/67417bd98f12bffd0352f76063e5abbd.png) | ![image103](../media/3dca1bdd1d1420c1d12b16cbf52fee00.png) | ![image104](../media/31fb938502d3d519813c391569d6a3f3.png) | ![image105](../media/393e74e8219e2ae066a43f5f19835ea0.png) |
| HX-2.54 4P 双头 连接线\*1                               | 3Pin 双母头杜邦线\*1                                    | USB线\*1                                                | 18650双节电池盒 (18650电池*2 (电池自配))* 1             |
| ![image106](../media/146f0fc8a39a7d767675ff130236d967.png) | ![image107](../media/07752ebfc8e8af62f1b86c4a725ea284.jpg) | ![image108](../media/2adb48888136bedc4d6b37d47a47b292.jpg) | ![image109](../media/c5bf59a8e5cdded95c02334369ab6fdd.png) |

**超声波模块知识：**

原理：看超声波的图可知，像是有两个眼睛，其一边是发射超声的，一边是接收超声波的，然后检测从发射遇到障碍物返回被接收到所需的时间t，再根据声音在空气中的传播速度大概是343m/s,

距离 = 速度 \* 时间 ，

由于超声波发射返回是两段路程了，所以需要除以2，故超声波测到的
距离=（速度 \* 时间）/2

超声波模块的使用方法及时序图：

1、使用GPIO引脚给SR04的Trig引脚至少10μs的高电平信号，触发SR04模块测距功能；

2、触发后，模块会自动发送8个40KHz的超声波脉冲，并自动检测是否有信号返回。这步会由模块内部自动完成。

3、如有信号返回，Echo引脚会输出高电平，高电平持续的时间就是超声波从发射到返回的时间。

![image110](../media/7d2dccb20acaf9b17c53063421a5faa0.png)

超声波模块的电路图

![image111](../media/6637578e3d2c6f902ee32931532a83ca.png)

**接线图：**

**⚠️特别注意：坦克智能车已经组装好了，这里不需要把传感器模块和其他的都拆下来又重新组装和接线，这里再次提供接线图，是为了方便您编写代码。但是，LED灯是需要另外连接上去的！**

接线注意：超声波传感器模块的VCC引脚连接至传感器扩展板的5v(V)，Trig引脚至数字12(S)，Echo引脚至数字13(S)，Gnd引脚至Gnd(G)。

![image112](../media/82e3d601ebcc5903b9bca322f5e5a4f4.png)

**项目代码：**

（**特别提醒：在上传程序代码前，需要把蓝牙模块取下，否则代码会上传失败。需要上传代码成功后，再连接蓝牙模块。**）

![image113](../media/img-20250618130832.png)

**项目结果：**

上传好测试代码到开发板，单击![image114](../media/img-20250618112826.png)，在串口监视器窗口设置波特率为9600，我们可以看到超声波模块显示的距离，单位是英尺和厘米。用手阻挡超声波模块，我们看到显示距离的数值变小了。

![image115](../media/img-20250618130906.png)

**项目拓展：**

我们刚刚测出了超声波显示的距离，那我们动动脑筋，能不能用测出的距离来做一些控制呢，如果控制一个LED灯的亮和灭。我们来试一下，在D9脚接上一个LED灯模块。

![image116](../media/d7cdc56d4c509c7f81bdc47d3ec6f4b5.png)

实验代码：

（**特别提醒：在上传程序代码前，需要把蓝牙模块取下，否则代码会上传失败。需要上传代码成功后，再连接蓝牙模块。**）

![image117](../media/img-20250618131315.png)

上传好测试代码到开发板，我们用手去靠近超声波传感器，看LED灯亮起来了没有。

**代码说明:**

![image118](../media/img-20250619154138.png)

将超声波传感器检测到的距离值赋给于变量 distance1。

![image119](../media/img-20250619154208.png)

如果超声波传感器检测到的距离值（2≤distance≤10）的范围内，LED点亮；否则，LED不亮。